home *** CD-ROM | disk | FTP | other *** search
- LF EQU 0AH
- CR EQU 0DH
- CODE SEGMENT
- ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE
- ORG 0100H
- START: MOV AH,25
- INT 21H
- MOV DL,AL
- MOV AH,14
- INT 21H
- ADD AL,'@'
- MOV L0307A,AL
- MOV L0307B,AL
- CMP BYTE PTR DS:80H,0
- JZ L012E
- MOV AL,DS:5CH
- OR AL,AL
- JZ L012E
- CMP AL,2
- JBE L0139
- MOV AL,L0307A
- SUB AL,'@'
- CMP AL,DS:5CH
- JNZ L012E
- MOV BYTE PTR DS:6DH,'Y'
- JMP SHORT L0139
- L012E: MOV DX,OFFSET L0307
- MOV AH,9
- INT 21H
- MOV AX,4C01H
- INT 21H
- L0139: DEC AL
- MOV L028B,AL
- ADD AL,'A'
- MOV L02CB,AL
- L0149: MOV AL,DS:6DH
- CMP AL,'Y'
- JZ L0178
- MOV DX,OFFSET L02B1
- MOV AH,9
- INT 21H
- L0151: MOV AX,0C07H
- INT 21H
- AND AL,5FH
- CMP AL,'Y'
- JZ L0178
- CMP AL,'N'
- JZ L0166
- MOV AH,2
- MOV DL,7
- INT 21H
- JMP SHORT L0151
-
- L0166: MOV AX,0C00H
- INT 21H
- MOV AH,13
- INT 21H
- MOV AX,4C00H
- INT 21H
- L0178: MOV DL,L028B
- INC DL
- MOV AH,36H ;'6'
- INT 21H
- INC AX
- JNZ L018B
- MOV AL,0CH
- JMP SHORT L01A7
- L018B: MOV CX,1
- MOV DX,0
- MOV BX,OFFSET L08CB
- MOV AL,L028B
- INT 25H
- POP DX
- JB L01A7
- MOV AL,7
- CMP WORD PTR L08D6,0200H
- JZ L01AA
- L01A7: JMP L0256
- L01AA: MOV AX,L08DC
- MOV CL,4
- SHL AX,CL
- MOV L0283,AX
- MOV CL,8
- SHR AX,CL
- MOV CL,L08DB
- XOR CH,CH
- MOV L0289,CX
- MOV BX,L08E1
- L01C6: ADD AX,BX
- LOOP L01C6
- MOV L0285,AX
- MOV CL,8
- SHL BX,CL
- MOV L0287,BX
- MOV CX,L0285
- MOV DX,1
- MOV BX,OFFSET L08CB
- MOV AL,L028B
- INT 25H
- POP DX
- JB L0256
- MOV SI,OFFSET L08CE
- MOV DI,L0287
- SHL DI,1
- ADD DI,SI
- SUB DI,5
- CLD
- L01F8: LODSW
- AND AH,0FH
- CMP AX,0FF7H
- JZ L0206
- AND WORD PTR [SI-2],0F000H
- L0206: DEC SI
- CMP SI,DI
- JA L021C
- LODSW
- AND AL,0F0H
- CMP AX,0FF70H
- JZ L0218
- AND WORD PTR [SI-2],0FH
- L0218: CMP SI,DI
- JBE L01F8
- L021C: MOV SI,OFFSET L08CB
- MOV DI,L0287
- SHL DI,1
- ADD DI,SI
- MOV CX,L0289
- JMP SHORT L0236
- L022E: PUSH CX
- MOV CX,L0287
- REPZ MOVSW
- POP CX
- L0236: LOOP L022E
- XOR AX,AX
- MOV CX,L0283
- REPZ STOSW
- MOV CX,L0285
- MOV DX,1
- MOV BX,OFFSET L08CB
- MOV AL,L028B
- INT 26H
- POP DX
- JB L0256
- MOV AL,DS:6DH
- CMP AL,'Y'
- JNZ L0149A
- JMP L0166
- L0149A: JMP L0149
- L0256: CMP AL,0CH
- JBE L025C
- MOV AL,0CH
- L025C: MOV BX,OFFSET L07E9
- XOR AH,AH
- SHL AX,1
- ADD BX,AX
- MOV DX,[BX]
- MOV AH,9
- INT 21H
- MOV DX,OFFSET L08AB
- MOV AH,9
- INT 21H
- L0274: MOV AX,0C07H
- INT 21H
- MOV AX,0C00H
- INT 21H
- MOV AX,4C01H
- INT 21H
- L0283 DW 0
- L0285 DW 0
- L0287 DW 0
- L0289 DW 0
- L028B DB 0
- L02B1 DB CR,LF,'Blank diskette in drive '
- L02CB DB 'X:? (Y/N):$'
- L0307 DB 'Syntax: BLANK x:[ Y]',CR,LF
- DB 'Where: x = diskette drive id ( A or B or '
- L0307A DB 'x )',CR,LF
- DB ' drive '
- l0307b DB 'x does not need Y because it is assumed to be a ram disk.'
- DB CR,LF
- DB ' [ Y] = used to reformat a single diskette',CR,LF
- DB 'Function:',CR,LF
- DB ' Quickly reformats multiple or single diskettes.',CR,LF
- DB ' All files deleted, including hidden, system, and label.'
- DB CR,LF,'$'
- L07E9 DW L0803,L081C,L082E,L0896,L083D
- DW L0896,L0850,L085B,L086E,L0896
- DW L087F,L088B,L0896
- L0803 DB 'Write-Protected Diskette$'
- L081C DB 'Invalid Disk Unit$'
- L082E DB 'Disk Not Ready$'
- L083D DB 'Data ( CRC ) Error$'
- L0850 DB 'Seek Error$'
- L085B DB 'Unknown Media Type$'
- L086E DB 'Sector Not Found$'
- L087F DB 'Write Fault$'
- L088B DB 'Read Fault$'
- L0896 DB 'General Disk Failure$'
- L08AB DB ' - Press Any Key to Continue',CR,LF
- DB 7,'$'
- L08CB LABEL BYTE
- L08CE EQU L08CB+3
- L08D6 EQU L08CB+11
- L08DB EQU L08CB+16
- L08DC EQU WORD PTR L08CB+17
- L08E1 EQU WORD PTR L08CB+22
- CODE ENDS
- END START
- CB+3
- L08D6 EQU L08